package com.rc.saas.tenant.service.weixin;

import com.rc.saas.tenant.common.vo.TResponse;
import com.rc.saas.tenant.dto.TransPayWalletResultDto;
import com.rc.saas.tenant.model.member.MemberInfo;
import com.rc.saas.tenant.model.tenant.Tenant;
import com.rc.saas.tenant.model.tenant.TenantSetting;
import com.rc.saas.tenant.model.transfer.TransferOrder;
import com.rc.saas.tenant.transfers.weixin.WxTransPayWalletVo;
import org.weixin4j.pay.model.paywallet.TransPayWallet;
import org.weixin4j.pay.model.paywallet.TransPayWalletInfo;
import org.weixin4j.pay.model.paywallet.TransPayWalletResult;

import javax.servlet.http.HttpServletRequest;

/**
 * 企业付款到零钱
 * Created by Sven on 2021/08/12
 */
public interface WxPayWalletService {
    /**
     * 企业付款到零钱
     */
    TResponse transPayWallet(HttpServletRequest request, Tenant tenant, MemberInfo memberInfo, WxTransPayWalletVo transPayWalletVo, TenantSetting tenantSetting);

    /**
     * 企业付款到零钱
     */
    TransPayWalletResult transPayWallet(TransPayWalletResultDto transPayWalletResultDto);

    /**
     * 企业付款接口，没有异步通知。只有支付接口才会有。只能通过主动调用查询接口
     * 查询企业付款到零钱信息,查询企业付款API只支持查询30天内的订单，30天之前的订单请登录商户平台查询
     * 当天23点以后的账单在具体状态下可以会有延迟，需要晚一些才能查到明确状态
     * 目前最低付款金额为1元，最高10万元，请确认是否付款金额超限
     */
    TransPayWalletInfo getTransferInfo(Tenant tenant, TransPayWallet transPayWallet, String certPath, TransferOrder updateTransferOrder);

    /**
     * 查询企业付款到零钱信息
     */
    TransPayWalletInfo getTransferInfo(TransPayWalletResultDto transPayWalletResultDto);

    /**
     * 重试付款,重试付款必需使用原来订单号,重入必须保证所有参数值都不变
     */
    TransPayWalletInfo retryTransPayWallet(TransPayWalletResultDto transPayWalletResultDto);

}
